Software developers may wish to assess the performance or behavior of an application during various potential run-time scenarios. For example, a software developer may simulate or generate an error during execution of an application. The developer may then update or re-program the application such that the application is capable of appropriately preventing and/or correcting consequences of the error. A developer may also analyze the behavior of an application during additional types of execution scenarios, including those involving certain interactions with users or other applications.
To determine the behavior of an application during a certain execution scenario, a software developer may replace a function that the application is programmed to call with a different function. As an example, a developer may recreate a particular error scenario within an application by replacing a call path to an application program interface (API) the application is programmed to follow with a call path to a different (e.g., malfunctioning) API. Traditionally, replacing a call path of an application may involve manual adjustments to the source code of the application. For example, a software developer may test an execution scenario involving a particular call path by directly programming the application to follow the call path. Unfortunately, this traditional method for replacing call paths of applications may burden software developers with slow and/or tedious manual testing. Moreover, manually altering the source code of an application may increase the chance of introducing errors or bugs to the code.
The instant disclosure, therefore, identifies and addresses a need for improved apparatuses, systems, and methods for dynamically replacing call paths of running applications.